package framework;

import java.io.BufferedReader;
import java.io.InputStreamReader;

import webdriver.BaseTest;
import webdriver.Browser;
import webdriver.Logger;
import webdriver.PropertiesResourceManager;
import webdriver.Logger.Locale;

/** Расширенный класс базового теста для имплементации некоторых общих для тестов методов
 */
public class BaseTestExtended extends BaseTest{

	// поля для изменения локали
	private static final Locale DEF_LOCALE = Locale.RU;
	private static final String AQA_LOCALE = "aqa.locale";
	private static PropertiesResourceManager locProps = new PropertiesResourceManager(String.format("localization/loc_%1$s.properties", System.getProperty(AQA_LOCALE, DEF_LOCALE.toString()).toLowerCase()));
	// экземпляр расширенного браузера
	public static BrowserExtended browserExt;
	
	@Override
	public boolean shouldAnalys() {
		return false;
	}

	@Override
	public void invokeAnalys(Throwable exc, String bodyText) throws Throwable {
	}

	/**
	 * Метод запуска тестов
	 */
	@Override
	public void runTest()	{
		Logger.setNewLocalManager(locProps);
		setBrowserExt(new BrowserExtended());
		killProcess("EXCEL");
	}
	/**Геттер
	 * @return browserExt
	 */
	public static BrowserExtended getBrowserExt() {
		return browserExt;
	}
	/**Сеттер
	 * @param browserExt - browserExt
	 */
	public static void setBrowserExt(BrowserExtended browserExt) {
		BaseTestExtended.browserExt = browserExt;
	}
	
	/**
	 * Kill a process by its *.exe name
	 * @param process - process name without .exe. For example,  excel OR iexplore
	 */
	public void killProcess(String process) {
		logger.info("killing processes");
		try {
			String line;
			Process p = Runtime.getRuntime().exec(String.format("taskkill /IM %1$s.exe /F",	process));
			BufferedReader input = new BufferedReader(new InputStreamReader(p
					.getInputStream()));
			while (((line = input.readLine()) != null)) {
				logger.info(line);
			}
			input.close();
		} catch (Exception err) {
			err.printStackTrace();
		}
	}
}
